package com.ruoyi.business.service;

import com.ruoyi.business.domain.WmsInWarehousDetail;
import com.ruoyi.business.domain.WmsTransfer;

import java.util.List;
import java.util.Map;

/**
 * 入库单明细Service接口
 * 
 * @author sz
 * @date 2024-01-08
 */
public interface IWmsInWarehousDetailService 
{
    /**
     * 查询入库单明细
     * 
     * @param id 入库单明细ID
     * @return 入库单明细
     */
    public WmsInWarehousDetail selectWmsInWarehousDetailById(Long id);

    /**
     * 查询入库单明细
     *
     * @param info 入库单明细ID
     * @return 入库单明细
     */
    public WmsInWarehousDetail selectWmsInWarehousDetailBySn(WmsInWarehousDetail info);

    /**
     * 查询入库单明细列表
     * 
     * @param wmsInWarehousDetail 入库单明细
     * @return 入库单明细集合
     */
    public List<WmsInWarehousDetail> selectWmsInWarehousDetailList(WmsInWarehousDetail wmsInWarehousDetail);

    /**
     * 新增入库单明细
     * 
     * @param wmsInWarehousDetail 入库单明细
     * @return 结果
     */
    public int insertWmsInWarehousDetail(WmsInWarehousDetail wmsInWarehousDetail);

    /**
     * 修改入库单明细
     * 
     * @param wmsInWarehousDetail 入库单明细
     * @return 结果
     */
    public int updateWmsInWarehousDetail(WmsInWarehousDetail wmsInWarehousDetail);

    /**
     * 批量删除入库单明细
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteWmsInWarehousDetailByIds(String ids);

    /**
     * 删除入库单明细信息
     * 
     * @param id 入库单明细ID
     * @return 结果
     */
    public int deleteWmsInWarehousDetailById(Long id);

    /**
     * 审核
     */
    public void processData(WmsInWarehousDetail info);

    /**
     * 查询入库单里面可调拨的商品列表
     * @param info
     * @return
     */
    public List<WmsInWarehousDetail> queryGoodList(WmsTransfer info);

    /**
     * 查询过期预警列表
     * @param info
     * @return
     */
    public List<WmsInWarehousDetail> queryValidityList(WmsInWarehousDetail info);

    public List<WmsInWarehousDetail> queryStoreList(WmsInWarehousDetail info);

    /**
     * 根据货物编码查询货物的所有批次号
     * @param cargoSn
     * @return
     */
    public List<Map<String,Object>> queryCargoList(String cargoSn);
}
